Developer Documentation

QuickTime 4 API Documentation

QuickTime 4 Reference

| Previous | Chapter Contents | Chapter Top | Next |

CreateSampleVectorData Utility

Listing 9 shows the CreateSampleVectorData routine, which creates the vector data used in Listing 10 and Listing 20 .

Listing 9 Utility routine CreateSampleVectorData

Handle CreateSampleVectorData( long whichOne )
{
    OSErr               err;
    Handle              pathData = nil, vectorData = nil;
    ComponentInstance   ci = nil;
    gxPoint             aPoint;
    
    err = OpenADefaultComponent( decompressorComponentType,
                                    kVectorCodecType, &ci );
    if ( err ) goto bail;

    err = CurveNewPath( ci, &pathData );
    if ( err ) goto bail;

    if ( pathData == nil )
        { err = memFullErr; goto bail; }

    switch ( whichOne ) {
        case 1:
            aPoint.x = Long2Fix( 0 );
            aPoint.y = Long2Fix( 100 );
            err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
                                            0, 0, false );
            if ( err ) goto bail;
            
            aPoint.x = Long2Fix( 100 );
            aPoint.y = Long2Fix( 0 );
            err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
                                            0, 1, false );
            if ( err ) goto bail;

            aPoint.x = Long2Fix( 200 );
            aPoint.y = Long2Fix( 100 );
            err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
                                            0, 2, false );
            if ( err ) goto bail;

            aPoint.x = Long2Fix( 100 );
            aPoint.y = Long2Fix( 200 );
            err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
                                            0, 3, false );
            if ( err ) goto bail;
        break;

        case 2:
            aPoint.x = 0;
            aPoint.y = 100;
            err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
                                            0, 0, false );
            if ( err ) goto bail;
            
            aPoint.x = 100;
            aPoint.y = 0;
            err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
                                            0, 1, false );
            if ( err ) goto bail;

            aPoint.x = 200;
            aPoint.y = 100;
            err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
                                            0, 2, false );
            if ( err ) goto bail;

            aPoint.x = 100;
            aPoint.y = 200;
            err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
                                            0, 3, false );
            if ( err ) goto bail;
        break;

        case 3:
            aPoint.x = 0;
            aPoint.y = 0;
            err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
                                            0, 0, true );
            if ( err ) goto bail;
            
            aPoint.x = 200;
            aPoint.y = 50;
            err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
                                            0, 1, true );
            if ( err ) goto bail;

            aPoint.x = 400;
            aPoint.y = 400;
            err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
                                            0, 2, true );
            if ( err ) goto bail;
        break;

        case 4:
            aPoint.x = Long2Fix( 0 );
            aPoint.y = Long2Fix( 0 );
            err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
                                            0, 0, true );
            if ( err ) goto bail;
            
            aPoint.x = Long2Fix( 200 );
            aPoint.y = Long2Fix( 50 );
            err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
                                            0, 1, true );
            if ( err ) goto bail;

            aPoint.x = Long2Fix( 400 );
            aPoint.y = Long2Fix( 400 );
            err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
                                            0, 2, true );
            if ( err ) goto bail;
        break;

    }

    err = CurveCreateVectorStream( ci, &vectorData );
    if ( err ) goto bail;

    err = CurveAddPathAtomToVectorStream( ci, pathData, vectorData );
    if ( err ) goto bail;
    
    err = CurveAddZeroAtomToVectorStream( ci, vectorData );
    if ( err ) goto bail;

bail:
    if ( pathData ) DisposeHandle( pathData );
    if ( ci ) CloseComponent( ci );
    if ( err != noErr ) {
        if ( vectorData ) {
            DisposeHandle( vectorData );
            vectorData = nil;
        }
    }
    return vectorData;
}

© 1999 Apple Computer, Inc.

| Previous | Chapter Contents | Chapter Top | Next |